iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
自我挑戰組

基礎前端+後端網站分享之留言板製作系列 第 26

第二十六天--介紹篇之SQL注入(SQL Injection)

  • 分享至 

  • xImage
  •  

本篇文章為延伸閱讀,用於加強網頁部分知識,給想了解更深入卻無從下手的入門者。

注入式攻擊( Injection Attack)介紹

注入攻擊的類型分成以下:

  • SQL注入(SQL Injection)、
  • 命令注入(Command Injection)、
  • DLL注入(DLL Injection)、
  • LDAP注入(LDAP Injection)、
  • XML注入(XML External Entity Injection)、
  • 跨站腳本(Cross Site Scripting)。

比較和我們有關係的是SQL注入(SQL Injection)
是針對資料庫相關網頁應用程式or服務來進行攻擊

舉例來說,我的Mysql程式碼是
SELECT user_name,password FROM account WHERE user_name=?

?用來輸入帳號,如果我帳號寫"" OR 1 = 1,會變成
SELECT user_name,password FROM account WHERE user_name="" OR 1 = 1
會導致程式出錯,因為它會用出全部的資料。
SQL注入(SQL Injection)就是這麼回事,輕微的注入會導致出錯,嚴重的注入則是會導致資料庫被刪除or帳號被入侵。


如何避免SQL注入(SQL Injection)

  1. 過濾輸入:
    確保使用正則表達式去過濾用戶的輸入,更改和檢測輸入的參數,讓像是單引號進行一些方法,讓它不會被辨別是程式。

  2. 限制輸入的字元:
    限定字元不能是特殊符號,限制輸入欄位的長度,像是生日沒有必要開放到20個字元以上

  3. 屏蔽顯示錯誤訊息
    千萬不要將系統或資料庫的錯誤顯示於網頁上,盡可能避免顯示出Server 及資料庫的系統或是版本,以防止網站成了攻擊者的目標


上一篇
第二十五天--介紹和使用SESSION與留言板實作
下一篇
第二十七天--介紹篇之應用程式介面(API)
系列文
基礎前端+後端網站分享之留言板製作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言